import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
import java.util.*;
/**
 * Write a description of class sonicRojo here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class sonicRojo extends Monos
{
private  int aumento,cont=0;
private int iCamina=0;
/**
   * Act Metodo el cual se va a encargar de mandar todos los mensajes para poder realizar los metodos
   * 
   */
        
    public void act() 
    {
      cont+=1;
       Mundo w=(Mundo) super.getWorld();
       w.VR=(super.vidas);
      
       if(w.Nivel==3)
        if(getY()>350){
         w.V3R--;
     setLocation(200,220);}
     
     if(super.recogeMoneda())
      w.dineroRojo+=1;
    
     if(w.Nivel==1)
     if(w.dineroRojo==10&&w.VR<9)
     {
     super.vidas++;
     w.dineroRojo=0;
     }else
     if(w.dineroRojo==10)
     w.dineroRojo=0;
     
     if(w.Nivel==2)
     if(w.dineroRojo==10&&w.V2R<9)
     {
     w.V2R++;
     w.dineroRojo=0;
     }else
     if(w.dineroRojo==10)
     w.dineroRojo=0;
     
     if(w.Nivel==3)
     if(w.dineroRojo==10&&w.V3R<9)
     {
     w.V3R++;
     w.dineroRojo=0;
     }else
     if(w.dineroRojo==10)
     w.dineroRojo=0;
     
      super.cargaImagenes();
      if( gravedad());
      cambia(); 
      cambiaImagen();
         
     if(super.compara("Agua")||super.compara("Azul")||super.compara("Aceite"))
     {  
       move(3);
       Greenfoot.delay(5);
       super.vidas--;
       if(w.Nivel==2)
       w.V2R--;
       if(w.Nivel==3)
       w.V3R--;
       setLocation(200,340);
     }
      
    } 
  /**
    * cambia Metodo que se encarga de cambiar la secuencia de imagenes
    * como son el de brincar, caminar
    * @param No lleva
    */ 
    public  void cambia()
    {
       if(Greenfoot.isKeyDown("w")&&(Greenfoot.isKeyDown("d")||Greenfoot.isKeyDown("a")))
       for(int i=0;i<11;i++)
        saltoMortal(i);
       else
      if(Greenfoot.isKeyDown("a"))
      super.cambiaIzquierda();
       else
      if(Greenfoot.isKeyDown("d"))
       super.moverDerecha();
       else
       if(Greenfoot.isKeyDown("w") &&super.compara("escalera"))
       {
        setImage(saltos[15]);
        setLocation(getX(),getY()- 10);
        Greenfoot.delay(1);
       }
      else
       if(Greenfoot.isKeyDown("w")&&(super.compara("liso")))
        saltar();
       else 
       if(imagen<5)
         super.imagen=1;
         else
       if(imagen<9 || !gravedad())
       super.imagen=5;
    }
     /**
     * gravedad metodo que se encarga de verificar si esta inserseccionando con el piso
     * @param No lleva parametros
     * @return Regresa verdadero si hay interseccion
     */
   public boolean gravedad()
   {
        if(!super.compara("liso"))
        { 
            imagen=14;
            setLocation(getX(),getY()+5); 
            return true;
        }
           return false;
    }         
     /**
 * saltar Metodo que se encarga de asignar a la variable imagen un numero
 * especifica
 */
    public void saltar()
    {
        imagen=10;
    }  
    /**
     * cambiaImagen Metodo que se encarga de colocar todas las secuencias de imagenes
     * la de brincar saltar caminar etc
     */
    public  void cambiaImagen()
    {
       //System.out.println(iCamina);
  
        switch(super.imagen)
        {  
           case 1:setImage(imagenes[8]);
           break;
            
            case 2:setImage(imagenes[9]);  
            break;
            
            case 3:setImage(imagenes[10]);  
            break; 
            
            case 4:setImage(imagenes[11]);
            break; 
            
             case 5:setImage(imagenes[12]);
            break;
            
            case 6:setImage(imagenes[13]);  
            break;
            
            case 7:setImage(imagenes[14]);  
            break; 
            
            case 8:setImage(imagenes[15]);
            break; 
            
            case 14:setImage(saltos[14]);
            break;
            case 10:
                    setImage(saltos[11]);
                    setLocation(getX(),getY()-50);
                    super.imagen=1;
                    break;
            case 11:
                    saltos[11].mirrorHorizontally();
                    setImage(saltos[11]);
                    setLocation(getX(),getY()-30);
                    break;
        }
    } 
    /**
   * salta metodo que se encarga de poner la secuencia de imagenes
   * para ver como saltaba
   * @param No de la imagen que se va a poner
   */
    private void saltoMortal(int i)
    {
     int au=10;
     if(imagen<5)
     aumento=au;
     else
     aumento=-au;
     int alto=5;
    
     setImage(saltos[i]);
     if(i<5)
     setLocation(getX()+aumento,getY()-alto);
     else
     if(i<10)
     setLocation(getX()+aumento,getY()+alto);  
    
     Greenfoot.delay(1); 
    }
}
